const socket = require("socket.io");
const http = require("http");

const server = http.createServer();

const io = socket(server, {
  cors: {
    origin: "*",
  },
});

// websocket监听连接是否成功
io.on("connection", (sock) => {
  console.log("连接成功");
  // 连接成功后  向客户端发送连接成功的信息
  sock.emit("connectionSuccess", { message: "连接成功" });

  // 监听前端发送来加入房间的请求
  sock.on("joinRomm", (roomId) => {
    sock.join(roomId); // 加入房间
  });

  // 监听呼叫端的视频请求
  sock.on("callRemote", (roomId) => {
    // 向这个房间中的人广播这个事件 表示呼叫端请求了视频
    io.to(roomId).emit("callRemote");
  });
  // 监听接收端的视频请求
  sock.on("acceptCall", (roomId) => {
    // 向这个房间中的人广播这个事件 表示接收端同意视频
    io.to(roomId).emit("acceptCall");
  });

  // 监听呼叫端发来的offer信息
  sock.on("sendOffer", ({ roomId, offer }) => {
    // 向接收端发送offer信息
    io.to(roomId).emit("sendOffer", offer);
  });

  // 监听接收端发来的answer信息
  sock.on("sendAnswer", ({ roomId, answer }) => {
    // 向这个房间中的人广播这个事件 向接收端发送offer/answer信息
    io.to(roomId).emit("receiveAnswer", answer);
  });

  // 监听呼叫端发送的candidate信息
  sock.on("sendCandidate", ({ roomId, candidate, from }) => {
    // 向这个房间中的人广播candidate信息
    console.log("from", from);
    io.to(roomId).emit("receiveCandidate", candidate, from);
  });

  // 收到挂断视频请求
  sock.on("hangUp", (roomId) => {
    // 向这个房间中的人广播这个事件
    io.to(roomId).emit("hangUp");
  });
});

server.listen(3004, () => {
  console.log("服务启动成功");
});
